package net.stogi.unicore.beyond.ui.client.taskeditor.taskoutline;

import net.stogi.common.mvp.core.behavior.Behavior;
import net.stogi.common.mvp.core.behavior.BehaviorWithValue;

interface TaskOutlineView {

	void addInputDefinition(String definitionName, int definitionIndex, int groupIndex);

	void addInputGroup(String groupName, int groupIndex);
	
	void addOutputDefinition(String definitionName, int definitionIndex, int groupIndex);
	
	void addOutputGroup(String groupName, int groupIndex);
	
	void blockDelete(boolean block);
	
	void blockEdit(boolean block);
	
	void blockMoveDown(boolean block);
	
	void blockMoveUp(boolean block);

	void clear();
	
	void selectInputDefinition(String name);
	
	void selectInputGroup(String name);
	
	void selectOutputDefinition(String name);
	
	void selectOutputGroup(String name);
	
	void setDeleteInputDefinitionBehavior(BehaviorWithValue<String> behavior);
	
	void setDeleteInputGroupBehavior(BehaviorWithValue<String> behavior);
	
	void setDeleteOutputDefinitionBehavior(BehaviorWithValue<String> behavior);
	
	void setDeleteOutputGroupBehavior(BehaviorWithValue<String> behavior);
	
	void setEditInputDefinitionBehavior(BehaviorWithValue<String> behavior);
	
	void setEditInputGroupBehavior(BehaviorWithValue<String> behavior);
	
	void setEditOutputDefinitionBehavior(BehaviorWithValue<String> behavior);

	void setEditOutputGroupBehavior(BehaviorWithValue<String> behavior);

	void setInputDefinitionSelectedBehavior(BehaviorWithValue<String> behavior);

	void setInputGroupSelectedBehavior(BehaviorWithValue<String> behavior);

	void setMoveDownInputDefinitionBehavior(BehaviorWithValue<String> behavior);

	void setMoveDownInputGroupBehavior(BehaviorWithValue<String> behavior);

	void setMoveDownOutputDefinitionBehavior(BehaviorWithValue<String> behavior);

	void setMoveDownOutputGroupBehavior(BehaviorWithValue<String> behavior);

	void setMoveUpInputDefinitionBehavior(BehaviorWithValue<String> behavior);

	void setMoveUpInputGroupBehavior(BehaviorWithValue<String> behavior);

	void setMoveUpOutputDefinitionBehavior(BehaviorWithValue<String> behavior);

	void setMoveUpOutputGroupBehavior(BehaviorWithValue<String> behavior);

	void setOutputDefinitionSelectedBehavior(BehaviorWithValue<String> behavior);
	
	void setOutputGroupSelectedBehavior(BehaviorWithValue<String> behavior);

	void setSomethingElseSelectedBehavior(Behavior behavior);
}
